import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';

// 获取当前文件的目录路径
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

// 递归查找所有.md文件
function findMarkdownFiles(dir, fileList = []) {
    const files = fs.readdirSync(dir);

    files.forEach(file => {
        const filePath = path.join(dir, file);
        const stat = fs.statSync(filePath);

        if (stat.isDirectory()) {
            findMarkdownFiles(filePath, fileList);
        } else if (path.extname(file) === '.md') {
            fileList.push(filePath);
        }
    });

    return fileList;
}

// 替换文件内容
function replaceJsWithTs(filePath) {
    try {
        let content = fs.readFileSync(filePath, 'utf8');

        // 替换 ```javascript 为 ```typescript {cmd=ts-node}
        const originalContent = content;
        // content = content.replace(/```ypescript/g, '```ts');
        // content = content.replace(/```typescript(?!\s+\{cmd=ts-node\})/g, '```typescript {cmd=ts-node}');


        // 如果内容有变化，写回文件
        if (content !== originalContent) {
            fs.writeFileSync(filePath, content, 'utf8');
            console.log(`已更新: ${filePath}`);
            return true;
        }

        return false;
    } catch (error) {
        console.error(`处理文件 ${filePath} 时出错:`, error);
        return false;
    }
}

// 主函数
function main() {
    const docsDir = path.join(__dirname, 'docs');

    // 确保docs目录存在
    if (!fs.existsSync(docsDir)) {
        console.error('docs目录不存在!');
        return;
    }

    // 查找所有Markdown文件
    const markdownFiles = findMarkdownFiles(docsDir);
    console.log(`找到 ${markdownFiles.length} 个Markdown文件`);

    // 替换每个文件中的JavaScript代码块
    let updatedCount = 0;
    markdownFiles.forEach(file => {
        if (replaceJsWithTs(file)) {
            updatedCount++;
        }
    });

    console.log(`完成! 已更新 ${updatedCount} 个文件`);
}

// 执行主函数
main();
